#ifndef WIDGET_2_H
#define WIDGET_2_H
#include <QLabel>
#include <QWidget>
#include <QMovie>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QJsonObject>
#include <QJsonArray>
#include <QList>
#include <QString>
#include <QJsonDocument>
#include <QResizeEvent>

// 定义一个天气数据结构体
typedef struct WeatherData {
    QString city;        // 城市名称
    QString parent;      // 上级城市（区域）
    QString updateTime;  // 更新的时间
    QString temperature; // 温度
    QString humidity;    // 湿度
    QString airQuality;  // 空气质量
    int pm25;            // PM2.5
    int pm10;            // PM10
    QString coldAlert;   // 冷空气预警

    struct Forecast {
        QString date;   // 日期
        QString high;   // 最高温度
        QString low;    // 最低温度
        QString week;   // 星期
        QString type;   // 天气类型（如晴、雨等）
        QString notice; // 注意事项
    };

    QList<Forecast> forecast;  // 未来几天的天气预报
} WeatherData;

namespace Ui {
class widget_2;
}

class widget_2 : public QWidget
{
    Q_OBJECT


public:
    QLabel* background_main;

public:

    explicit widget_2(QWidget *parent = nullptr);  // 构造函数
    ~widget_2();  // 析构函数

    // 获取天气数据的公共接口
    void fetchWeather();

    // 获取存储的天气数据的公共接口
    const WeatherData& getWeatherData() const;
    void  show_data();
protected:
    void resizeEvent(QResizeEvent *event);
private slots:
    void onFinished(QNetworkReply *reply);  // 处理网络请求返回的槽函数

    void on_pushButton_clicked();

private:
    QNetworkAccessManager *manager;  // 网络管理器，发送和接收网络请求
    WeatherData weatherData;  // 存储天气数据的成员变量

    QPixmap Weathegetimg(QString str);
    QPixmap Weathegetimgbig(QString str);

    Ui::widget_2 *ui;  // UI组件的指针
};

#endif // WIDGET_2_H
